const mongoose = require('mongoose')
const Finantial = require('../Models/Finantial')
mongoose.Promise = global.Promise

var promise = mongoose.connect('mongodb://127.0.0.1:27017/BMS', {
  useMongoClient: true // 这个不要省，省了会报错
  /* other options */
})
var db = mongoose.connection
// db.on('error', console.error.bind(console, 'connection error!'))
// db.on('open', console.log.bind(console, 'connection success!'))

module.exports = {
  // 登录
  saveFinantialData: function (req, res) {
    const reqData = req.body.data[0]

    Finantial.fetch(function (err, data) {
      if (err) {
        console.log(err)
        return res.json({message: `something wrong: ${err}`})
      }

      // console.log(data)
      let fidFlag = true // 新数据，在原数组里面没有
      let index = 0
      for (let i = 0; i < data.length; i++) {
        if (data[i]._id === reqData._id) {
          fidFlag = false // 在原数组里面找一遍，如果有相同的，返回false，进行下一级查找
          index = i // 找到相同的是哪一个，记录位置
        }
      }

      console.log('fidFlag -> ' + fidFlag)
      if (fidFlag) {
        let info = new Finantial(reqData)
        info.save(function (e) {
          if (e) {
            console.log(' -> error: ' + e)
            return res.json({message: 'fail to save!'})
          }
          res.json({data: reqData})
        })
      } else {
        let list = data[index].children
        let sidFlag = true // 新数据，默认不存在相同的子元素
        for (let i = 0; i < list.length; i++) {
          if (list[i]._id === reqData.children[0]._id) {
            sidFlag = false // 存在相同的子元素
          }
        }
        console.log('fidFlag -> ' + fidFlag + ' ->> sidFlag: ' + sidFlag + ' ->> request data id: ' + reqData.children[0]._id)
        if (sidFlag) {
          Finantial.update({_id: data[index]._id}, {'$push': {children: reqData.children[0]}}, function (err) {
            if (err) {
              console.log(' -> error: ' + err)
              return res.json({message: 'fail to update! err >> ' + err})
            }
            res.json({data: reqData})
          })
        } else {
          res.json({data: reqData, message: 'no data update'})
        }
      }
    })

    // for (let i = 0; i < data.length; i++) {
    //   console.log(req.body.data[i])
    //   console.log()
    //   let info = new Finantial(req.body.data[i])
    //   info.save(e => {
    //     if (e) {
    //       console.log(' -> error: ' + e)

    //       // return res.json({message: 'fail to save!'})
    //     }
    //     // res.json({data: req.body.data[i]})
    //   })
    // }
  },
  findFinantialData: function (req, res) {
    Finantial.fetch(function (err, data) {
      if (err) {
        console.log(err)
        return res.json({message: `something wrong: ${err}`})
      }
      // console.log(data)
      res.json({data: data})
    })
  }
}

function combineData (data, result) {
  let out = data
  let fidFlag = true // 新数据，在原数组里面没有
  let index = 0
  for (let i = 0; i < data.length; i++) {
    if (data[i].id === result[0].id) {
      fidFlag = false // 在原数组里面找一遍，如果有相同的，返回false，进行下一级查找
      index = i // 找到相同的是哪一个，记录位置
    }
  }

  if (fidFlag) {
    out.push(result[0])
  } else {
    let list = data[index].children
    let sidFlag = true // 新数据，默认不存在相同的子元素
    for (let i = 0; i < list.length; i++) {
      if (list[i].id === result[0].children[0].id) {
        sidFlag = false // 存在相同的子元素
      }
    }
    if (sidFlag) {
      out[index].children.push(result[0].children[0])
    }
  }
  return out
}
